// 对象字面量

// const bar = '345'

// const obj = {
//     foo: 123,
//     // bar: bar
//     bar,
//     // method1:function(){
//     //     console.log('method111')
//     // },
//     method1 () {
//         console.log('method111') //method111
//         console.log(this) //{foo: 123, bar: "345", 0.5123390072100824: 123, method1: ƒ}
//     },
//     // Math.random():123  //es5以前 不可以 必须是一个明确或符合变量名规范的名称
//     [Math.random()]: 123  // es2015  计算属性名 []里可以使用任意表达式
// }

// // obj[Math.random()] = 123  // es5以前 只能动态添加



// console.log(obj)  //{foo: 123, bar: "345", 0.5123390072100824: 123, method1: ƒ}
// obj.method1()



//--------------------------------------------------


// Object.assign 方法  将多个源对象属性复制到一个目标对象中

// const source1 = {
//     a: 123,
//     b: 123
// }

// const source2 = {
//     a: 789,
//     d: 789
// }

// const target = {
//     a: 456,
//     c: 456
// }

// const result = Object.assign(target,source1,source2) 
// //支持传入任意个数对象，第一个对象是目标对象。所有源对象的属性都会复制到这个对象中。返回结果也是该对象
// console.log(target)  //{a: 123, c: 456, b: 123}
// console.log(result === target) //true


// function func (obj) {
//     // obj.name = 'func obj'
//     // console.log(obj) //{name: "func obj"} 
//     //如果直接修改 方法外的obj也会被修改为 {name: "func obj"}

//     const funcObj = Object.assign ({},obj)
//     funcObj.name = 'func obj'
//     console.log(funcObj) //{name: "func obj"}
//     //使用这种方法 新建一个全新的funcObj方法外的obj就不会受影响
// }

// const obj = {name: 'global obj'}
// func(obj)
// console.log(obj)


//--------------------------------------------------
// Object.is  用来判断 两个值是否相等 
//  2015以前  可以使用 == 或 === 来判断。
// 但是 == 会转换数据类型。=== 对于数字 +0 和 -0没法处理


// Object.is(NaN,NaN)
 // 一般情况下还是建议使用 === 不建议使用  Object.is

